package DataStructure;

import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;

/**
 * VectorTest Vector 类实现了一个动态数组。和 ArrayList 很相似 Vector
 * 主要用在事先不知道数组的大小，或者只是需要一个可以改变大小的数组的情况
 */
public class VectorTest {

    public static void main(String[] args) {

        // initial size is 3, increment is 2
        Vector<Object> v = new Vector<Object>(3, 2);
        System.out.println("Initial size: " + v.size());// 元素数量
        System.out.println("Initial capacity: " + v.capacity());
        v.addElement(1);
        v.addElement(2);
        v.addElement(3);
        v.addElement(4);
        System.out.println("Capacity after four additions: " + v.capacity());
        System.out.println("Initial size: " + v.size());// 元素数量

        v.add(5);

        v.addElement(5.45);
        System.out.println("Current capacity: " + v.capacity());
        v.addElement(6.08);
        v.addElement(7);
        System.out.println("Current capacity: " + v.capacity());
        v.addElement(9.4);
        v.addElement(10);
        System.out.println("Current capacity: " + v.capacity());
        v.addElement(1);
        v.addElement(12);
        System.out.println("First element: " + (Integer) v.firstElement());
        System.out.println("Last element: " + (Integer) v.lastElement());
        if (v.contains(3))
            System.out.println("Vector contains 3.");
        // enumerate the elements in the vector.
        Enumeration<Object> vEnum = v.elements();
        System.out.println("\nElements in vector:");
        while (vEnum.hasMoreElements())
            System.out.print(vEnum.nextElement() + " ");
        System.out.println();


        System.out.println("遍历方法");
        // 第一种遍历方法使用 For-Each 遍历 List
        for (Object str : v) { // 也可以改写 for(int i=0;i<list.size();i++) 这种形式
            System.out.println(str);
        }

        // 第二种遍历，把链表变为数组相关的内容进行遍历
        Object[] strArray = new Object[v.size()];
        v.toArray(strArray);
        for (int i = 0; i < strArray.length; i++) // 这里也可以改写为 for(String str:strArray) 这种形式
        {
            System.out.println(strArray[i]);
        }

        // 第三种遍历 使用迭代器进行相关遍历

        Iterator<Object> ite = v.iterator();
        while (ite.hasNext())// 判断下一个元素之后有值
        {
            System.out.println(ite.next());
        }
    }
}